//
//  WeiboStatusViewModel.swift
//  weiboSwift1.0
//
//  Created by xuNick on 16/4/20.
//  Copyright © 2016年 NN. All rights reserved.
//

import UIKit



class WeiboCellViewModel: NSObject {
    
    
    var status:WeiboStatus?{
        didSet{
            //执行会员图像转换
            translateVip()
            //来源字符串截取
            translateSource()
//            //转换时间
//            translateTime()
            createDate = self.sinaDate(status?.created_at)
            //转换转发内容
            translateRetweet()
            //转换配图
           
             translatePics(status?.pic_urls, pic: 1)
            
            //转换转发微博配图
            translatePics(status?.retweeted_status?.pic_urls, pic: 2)
        }
    }
    
    
    
    //会员图像
    var VipImage:UIImage?
    
    //来源
    var source:String?
    
    //时间
    var time:String?{
        return dealCreateAtText(createDate ?? NSDate())

    }
    
    
     private var createDate: NSDate?
    
    //转发的内容
    var retweet:String?
    
    //转发的图片
    var pic_retweet:[cell]?
    
    //发表的图片
    var pic_me:[cell]?
    
    //MARK: - 数据转换函数
    func translateVip(){
        //确定有值.在1-7
        if let VipRank = status?.user?.mbrank  where VipRank > 0 && VipRank < 7{
            VipImage = UIImage(named:"common_icon_membership_level\(VipRank)")
        }
        
    }
    
    func translateSource(){
        //字符串截取
        //Optional("<a href=\"http://weibo.com/\" rel=\"nofollow\">微博 weibo.com</a>")

//        print(status?.source)
        let string = status?.source
        let startIndex = string?.rangeOfString("\">")?.endIndex
        let endIndex = string?.rangeOfString("</")?.startIndex
        let result = string?.substringWithRange(startIndex!..<endIndex!)
        source = String(" 来自\(result!)")
    }
    
    
    
    private func sinaDate(createAt: String?) -> NSDate? {
        
        // 时间字符串
        guard let create_at = createAt else {
            return nil
        }
        
        // 转成 NSDate
        // 初始化时间格式化器
        let fm = NSDateFormatter()
        // 指定格式字符串   Sun Nov 22 11:25:56 +0800 2015
        fm.locale = NSLocale(localeIdentifier: "en")
        // 2015-08-10 10:10:10 yyyy-MM-dd HH:mm:ss
        fm.dateFormat = "EEE MMM dd HH:mm:ss z yyyy"
        let createDate = fm.dateFromString(create_at)!
        return createDate
    }
    private func dealCreateAtText(createDate: NSDate) -> String {
        //        // 时间字符串
        //        guard let create_at = status?.created_at else {
        //            return ""
        //        }
        //
        //        // 转成 NSDate
        //        // 初始化时间格式化器
        let fm = NSDateFormatter()
        //        // 指定格式字符串   Sun Nov 22 11:25:56 +0800 2015
        fm.locale = NSLocale(localeIdentifier: "en")
        //        // 2015-08-10 10:10:10 yyyy-MM-dd HH:mm:ss
        //        fm.dateFormat = "EEE MMM dd HH:mm:ss z yyyy"
        //        let createDate = fm.dateFromString(create_at)!
        //        print(createDate)
        
        let calendar = NSCalendar.currentCalendar()
        
        
        
        // ＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝以下代码供测试使用＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝
        // createDate = NSDate().dateByAddingTimeInterval(-61 * 60 * 24 * 365)
        // ＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝以上代码供测试使用＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝
        
        
        // 与当前时间进行对比
        if isDateInThisYear(createDate) { // createDate是否是今年
            if calendar.isDateInToday(createDate) {// 是今天
                let currentDate = NSDate()
                // 求出当前时间与创建时间的差值（秒）
                let timeInterval = currentDate.timeIntervalSinceDate(createDate)
                
                if timeInterval < 60 {// 是否是1分钟之内
                    return "刚刚"
                }else if timeInterval < 3600 { // 是否是1小时之内
                    // xx 分钟前
                    return "\(Int(timeInterval) / 60)分钟前"
                }else{
                    // xx 小时前
                    return "\(Int(timeInterval) / 3600)小时前"
                }
            }else if calendar.isDateInYesterday(createDate) {//是昨天
                // 昨天 10:10
                fm.dateFormat = "昨天 HH:mm"
                return fm.stringFromDate(createDate)
            }else{
                // 其他 08-10 10:10
                fm.dateFormat = "MM-dd HH:mm"
                return fm.stringFromDate(createDate)
            }
        }else{
            //            createAtText = "不是今年"
            fm.dateFormat = "yyyy-MM-dd HH:mm"
            return fm.stringFromDate(createDate)
        }
    }
    
    /// 传入一个时间，与当前时间进行对比 ，返回是否是当前时间的年分
    private func isDateInThisYear(targetDate: NSDate) -> Bool {
        // 当前时间
        let currentDate = NSDate()
        
        let fm = NSDateFormatter()
        fm.dateFormat = "yyyy"
        // 取出两个时间的年份
        let targetYear = fm.stringFromDate(targetDate)
        let currentYear = fm.stringFromDate(currentDate)
        
        return targetYear == currentYear
    }

    
//    func translateTime(){
//        //取出字符串
//        //"Thu Apr 21 12:53:10 +0800 2016"
//        let dateString = status?.created_at
////        print(dateString)
//        //取出日期  时间
//        let date = (dateString! as NSString).substringWithRange(NSMakeRange(4, 6))
//       let detailTime = (dateString! as NSString).substringWithRange(NSMakeRange(7,9))
////        let detailTime = dateString?.substringWithRange(Range(start: 12, end: 20))
//        //大于2天
//      //昨天
//        //今天
//            //1小时内
//            //1小时以上
//        time = String("\(date)\(detailTime)")
//    }
    
    //转换转发内容
    func translateRetweet(){
        
       
        retweet = status?.retweeted_status?.text
        
           }
    //转换图片内容
    func translatePics(pics:[PictureUrls]?, let pic: Int){
        guard let p = pics else{
            return
        }
        
        let count = p.count
        //遍历数组加载图片
        var temp = [cell]()
        for pic in p{
           
            let imageView = cell(frame: CGRect(x: 0, y: 0, width: itemWH, height: itemWH))
//           imageView.userInteractionEnabled = true
            if let pp = pic.thumbnail_pic  {
                if pp.hasSuffix(".gif"){
                    imageView.flagView.hidden = false
                }else{
                    imageView.flagView.hidden = true
                }
            }
            
            
            
            
            
            
            if count != 1{
                 imageView.sd_setImageWithURL(NSURL(string: pic.thumbnail_pic!))
                
                
            }
           
            temp.append(imageView)
            
        }
      
        if pic == 1{
            pic_me = temp
        }else{
            pic_retweet = temp
        }
    }
}
